import numpy as np
from matplotlib import pyplot as plt
import mplfinance as mpf
import tushare as ts

# 折线图（函数线）
plt.rcParams['font.family']=['STFangsong']
plt.title('线性函数')
x=np.arange(1,11)
print(x)
y=2 * x + 10 
plt.xticks(np.arange(1,15,1))
plt.xlabel('XX')
plt.yticks(np.arange(1,40,1))
plt.ylabel('YY')
plt.plot(x,y,'vb')
plt.show()

# 绘制正弦波：计算正弦曲线上离散点的x和y的坐标
x=np.arange(0, 3*np.pi, 0.1)
y=np.sin(x)
plt.title('正弦函数')
plt.plot(x,y,'xb')
plt.show()

# 绘制余弦波：计算余弦曲线上离散点的x和y的坐标
x=np.arange(0, 3*np.pi, 0.1)
y=np.cos(x)
plt.title('余弦函数')
plt.plot(x,y,'xr')
plt.show()

# 绘制tan波：计算tan曲线上离散点的x和y的坐标
x=np.arange(0, 3*np.pi, 0.1)
y=np.tan(x)
plt.title('Tan函数')
plt.plot(x,y,'xg')
plt.show()

# 折线图
plt.title('Matplotlib Demo')
x=np.array([1,3,5,7,9])
x1=np.array([2,4,6,8,10])
xAxis=['202101','202103','202105', '202107','202109']
plt.xticks(x, xAxis, color='blue')
plt.xlabel('Date')
y=np.array([20,34,25,35,30])
y1=np.array([10,4,15,5,20])
plt.yticks(np.arange(0, 50, 5), rotation=30) # arange表示从0开始到50，步长尾5的等差数列
plt.ylim(0, 50) # 刻度的上限和下限
plt.ylabel('Value')
plt.plot(x, y, color='red', linewidth=10)
# 柱状图
y=np.array([20,34,25,35,30])
plt.bar(x,y,color='orange', width=0.5)
plt.bar(x1,y1,color='g', width=0.5)
plt.show()

# 绘制饼图
plt.title('pie title')
plt.rcParams['font.family']=['STFangsong']
sizes=[23000,2000,2000,1500,2000,800]
labels=['工资','基金','股票','博客','教程','其他']
colors=['red','blue','orange','green','pink','purple']
explode=(0,0,0.1,0.1,0.1,0.1)
plt.pie(sizes,explode=explode,labels=labels,startangle=45,colors=colors)
# 展示整个图像（好像这行代码有没有也没啥问题）
plt.show()


# 用subplot函数在同一个窗口中绘制多个函数
x=np.arange(0, 3*np.pi, 0.1)
y_sin=np.sin(x)
y_cos=np.cos(x)
# 建立subplot网格，高为2，宽为1
# 激活第一个subplot
plt.subplot(2,1,1)
plt.plot(x,y_sin)
plt.title('Sine')
# 激活第二个subplot
plt.subplot(2,1,2)
plt.plot(x,y_cos)
plt.title('Cosine')
# 展示图像
plt.show()


# K线绘制
# x = np.arange(np.datetime64('2023-10-01'), np.datetime64('2023-10-15'))
# print()
# plt.title('日K线')
# plt.plot(np.arange(len(x)), np.arange(len(x)))
# plt.xlabel('Date')
# plt.xticks(np.arange(len(x)), x, rotation=60)
# plt.ylabel('股价')
# plt.show()

# mpf
print(ts.__version__)
# set token
ts.set_token('9084dfbcc6245ce84b632fbad1f2c24539b71aeec5f021075bfbcecf')
# init pro api
pro = ts.pro_api()
# get 000001股票的数据
kd = pro.daily(ts_code='000001.SZ', start_date='20230701', end_date='20230720')
# 数据格式： no. ts_code     trade_date  open  high   low  close  pre_close  change    pct_chg  vol        amount
# print(kd)
plt.tick_params(labelsize=8)
plt.title('000001.SZ K线数据')
plt.xlabel('交易日')
plt.ylabel('股价')
plt.xticks(rotation=60)
plt.plot(kd.trade_date, kd.open, color='red')
plt.plot(kd.trade_date, kd.close, color='orange')
# mpf.plot(kd, type='candle',ylabel='Candle', axtitle='my style')
print('长度')
print(kd.close)
# for date in kd.trade_date:
plt.bar(kd.trade_date, height=kd.close, bottom=kd.open, width=0.5)
plt.show()